package com.demo.crm.springboot3security.dto;

import lombok.Data;
import java.util.List;
import java.util.Map;

/**
 * 模块配置DTO
 */
@Data
public class ModuleConfig {
    private String name; // 模块名称
    private String code; // 模块编码
    private String description; // 模块描述
    private String icon; // 模块图标
    private Integer orderNum; // 排序号
    private Long parentId; // 父模块ID
    private List<FormConfig> forms; // 表单配置列表
    private LayoutConfig layout; // 布局配置

    @Data
    public static class FormConfig {
        private String name; // 表单名称
        private String code; // 表单编码
        private String description; // 表单描述
        private List<FieldConfig> fields; // 字段配置列表
        private FormLayoutConfig layout; // 表单布局配置
    }

    @Data
    public static class FieldConfig {
        private String name; // 字段名称
        private String code; // 字段编码
        private String type; // 字段类型
        private String label; // 字段标签
        private String placeholder; // 占位文本
        private List<String> options; // 选项（用于下拉框等）
        private boolean required; // 是否必填
        private Map<String, Object> validation; // 验证规则
        private Integer orderNum; // 排序号
        private String defaultValue; // 默认值
        private String helpText; // 帮助文本
        private Map<String, Object> style; // 样式配置
    }

    @Data
    public static class LayoutConfig {
        private List<Section> sections; // 布局分区

        @Data
        public static class Section {
            private String id; // 分区ID
            private String title; // 分区标题
            private String type; // 分区类型（form/list/chart等）
            private String formCode; // 关联的表单编码
            private Integer width; // 宽度（1-12）
            private Integer height; // 高度（1-12）
            private Map<String, Object> style; // 样式配置
            private Map<String, Object> options; // 其他配置选项
        }
    }
}